#include "pch.hpp"
#include "OutputWidget.hpp"

using namespace Engine;
using namespace Engine::Edit;




OutputWidget::OutputWidget(QWidget* parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	ui.output->setReadOnly(true);
}
///////////////////////////////////////////////////////////////////////////////////////////////////

OutputWidget::~OutputWidget()
{}
///////////////////////////////////////////////////////////////////////////////////////////////////




void OutputWidget::attach(logger::memorystream::ptr stream)
{
	m_connection = stream->pending.connect(boost::bind(&OutputWidget::pending, this));
	m_stream = stream;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

void OutputWidget::detach()
{
	m_connection.disconnect();
	m_stream.reset();
}
///////////////////////////////////////////////////////////////////////////////////////////////////

void OutputWidget::pending()
{
	auto entries = m_stream->pop_all();
	foreach(auto entry, entries)
	{
		ui.output->appendPlainText(QString("[%1] %2: %3")
			.arg(entry.module)
			.arg(logger::entry::toString(entry.lvl))
			.arg(entry.message));
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
